package org.wheel.plugins.toolkit.util.sql.entity;

import lombok.*;
import org.wheel.plugins.toolkit.sql.annon.Table;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 工作包
 * </p>
 *
 * @author 兰
 * @since 2023-09-28
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "plan_work_package", schema = "zh")
public class WorkPackage implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    private String id;

    private String workMasterId;

    private String taskCode;

    private String milestone;

    private String workName;

    private String workDescription;


    private String keyProject;

    private String execUserId;
    private String execUserName;

    private String responsibleDeptId;

    private String remark;

    private Integer sortNum;

    private String finishStatus;

    private String changeRequestStatus;

    private String changeId;

    /**
     * 工作完成状态
     * 1. 未超期，工作按时结束（有时间结束时间，且结束时间等于计划结束时间）
     * 2. 延期，工作已经结束 （有时间结束时间，且结束时间晚于计划结束时间）
     * 3. 工作进行中。 （有实际开始时间，且当前时间小于计划结束时间）
     * 4. 任务未开始，也没有执行数据 （没有月度分解计划，也没有实际的时间）
     * 5. 任务提前结束 （依据实际完成时间判断）
     * 6. 任务终止或暂停 (判断 master主计划 或 package 工作包的 finish状态字段)
     * 7. 工作进行中，延误 （有实际开始时间，且当前时间大于等于计划结束时间）
     * 7(8). 工作进行中，延误（有实际开始时间，且实际开始时间 大于 计划结束时间）
     */
    private String workCompleteType;

    private String routineConfigId;

    private String delFlag;

    private Integer revision;

    private String idCreate;

    private LocalDateTime gmtCreate;

    private String idModified;

    private LocalDateTime gmtModified;
}
